<?php
namespace app\index\controller;

use think\Controller;
use app\user\controller\PublicController;
use think\Db;

class QueryController extends Controller
{
    public function query()
    {
        $query=Db::name("index");
        $data=$query->field("id,name")->where("1=1")->order("id desc")->limit(3)->select();
        var_dump($data);

        $data=$query->find();
        var_dump($data);
    }
    public function chunk()
    {
        $query=Db::name("index");
        //使用chunk可以将大量的数据分批处理，chunk不支持order、limit连贯操作
        //可以用chunk的可选参数设置排序
        $query->field("id,name")->where("1=1")->chunk(3,function($data){
            var_dump($data);
        },"id","desc");
    }
    public function insert()
    {
        $query=Db::name("index");
        $result=$query->insert(["name"=>"query->insert"]);
    }
    public function update()
    {
        $query=Db::name("index");
        $id=$query->insertGetId(["name"=>"update->insert"]);

        //如果更新的字段中包含主键，则只更新主键对应的数据
        //如果没有明确定义更新的条件，也没有传入主键，则不会进行更新
        $result=$query->update(["id"=>$id,"name"=>"update"]);

        //插入表达式需要用Db:raw()
        $result=$query->where(["id"=>$id])->update(["name"=>Db::raw("CONCAT(`name`,'+exp')")]);

        $data=$query->where(["id"=>$id])->find();
        var_dump($data);

        $result=$query->where(["id"=>$id])->setField("name","setField");
        $result=$query->where(["id"=>$id])->setInc("number");
        $result=$query->where(["id"=>$id])->setDec("number",2);
        $data=$query->where(["id"=>$id])->find();
        var_dump($data);

        //新封装的连贯操作
        //连续操作一个字段两次，前一次会被覆盖
        $result=$query->where(["id"=>$id])->inc("number",10)->dec("number",3)->exp("name","`number`")->update();
        $data=$query->where(["id"=>$id])->find();
        var_dump($data);
    }
    public function delete()
    {
        $query=Db::name("index");
        $id=$query->insertGetId(["name"=>"delete->insert"]);
        $data=$query->where(["id"=>$id])->find();
        var_dump($data);

        $query->delete($id);//删除主键是指定的值的数据

        $data=$query->where(["id"=>$id])->find();
        var_dump($data);
    }
}
